package com.huitong.common.mybatis.annotation;

import com.huitong.common.mybatis.domain.po.BaseFieldPO;
import com.huitong.common.mybatis.interceptor.AutoFillInterceptor;
import org.apache.ibatis.mapping.SqlCommandType;
import org.apache.ibatis.plugin.Invocation;

import java.lang.annotation.*;

/**
 * 自动填充公共字段注解
 * <p>该注解用于标记需要自动填充的字段 并指定自动填充生效时的sql操作类型</p>
 * <b><p>即使添加了{@code AutoFill}注解 如果数组为空 也不会进行任何填充操作</p></b>
 *
 * @author fromdrowning
 * @date 2024/3/26 15:46
 * @see BaseFieldPO
 * @see AutoFillInterceptor#intercept(Invocation)
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface AutoFill {

    /**
     * 自动填充公共字段生效的sql操作类型
     * <b><p>即使添加了{@code AutoFill}注解 如果数组为空 也不会进行任何填充操作</p></b>
     *
     * @return 自动填充生效的sql操作类型数组
     */
    SqlCommandType[] value();

}
